interface Iobj {
  name: string
}

// fn的作用: 调用fn,返回一个数组,第二个参数是什么,则数组中存放什么.第二个参数是几,则数组中有几个元素

// fn后面<T>. T就是一个泛型.在函数定义时,这个T的类型是无法确定的.在使用fn函数时,传入的类型是什么,则T就是什么类型
function fn<T>(arg: T, length: number): T[] {
  const arr: T[] = []
  for (let i = 0; i < length; i++) {
    arr.push(arg)
  }
  return arr
}

fn<Iobj>({ name: 'zs' }, 3)[0]
fn<string>('x', 3)[0]
fn<number>(9, 3)[0]
